package org.pcorp.battlespace.construction.ui.sub.equipement;

import java.util.LinkedList;
import java.util.List;

import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;

import org.pcorp.battlespace.construction.modele.EquipementCstr;
import org.pcorp.battlespace.modele.Equipement;

public class TableEquipement extends AbstractTableModel {
	private static final long serialVersionUID = -414073683498383063L;
	//private List<EquipementConstruction> donneesFiltres;
	private List<EquipementCstr> donneesOriginales;
	private String[] entetes;
	public static final int QUANTITE=0;
	public static final int NOM=1;
	public static final int MASSE=2;
	public static final int DESCRIPTION=3;
	
	public TableEquipement() {
		super();
		//donneesFiltres = new LinkedList<EquipementConstruction>();
		donneesOriginales = new LinkedList<EquipementCstr>();
		entetes = new String[] {"qua", "nom", "masse", "des"};
	}
	
	@Override
	public int getRowCount() {
		if (donneesOriginales==null)
			return 0;
		return donneesOriginales.size();
	}

	@Override
	public int getColumnCount() {
		return entetes.length;
	}

	@Override
	public Object getValueAt(int rowIndex, int columnIndex) {
		EquipementCstr equipement = donneesOriginales.get(rowIndex);
		switch (columnIndex) {
			case QUANTITE:
				return equipement.getQuantite();
			case NOM:
				return equipement.getNom();
			case MASSE:
				return equipement.getMasse();
			case DESCRIPTION:
				return equipement.getDescription();
			default:
				return new EquipementCstr();
		}
	}

	@Override
	public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
	    if(aValue != null) {
	        EquipementCstr arm = donneesOriginales.get(rowIndex);
	        //EquipementConstruction equOr = findEquip(arm);
	        
	        switch(columnIndex){
	            case QUANTITE:
	            	long valeur;
	            	try {valeur = Long.parseLong((String)aValue);}
	            	catch (NumberFormatException ne) {valeur=0;} 
	                arm.setQuantite(valeur);
	                
	                break;
	        }
	    }
	}
	
	@Override
	public boolean isCellEditable(int rowIndex, int columnIndex) {
	   if (columnIndex==QUANTITE)
		   return true; 
	   else
		   return false;
	}
	
	@Override
	public String getColumnName(int column) {
        return entetes[column];
	}
	
	private EquipementCstr findEquip(Equipement e) {
		for (EquipementCstr equipementConstruction : donneesOriginales) {
			if (equipementConstruction.getCode().equalsIgnoreCase(e.getCode())) {
				return equipementConstruction;
			}
		}
		return null;
	}

	public List<EquipementCstr> getDonneesOriginales() {
		return donneesOriginales;
	}

	public void setDonneesOriginales(List<EquipementCstr> donneesOriginales) {
		this.donneesOriginales = donneesOriginales;
	}


}
